﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;
using ComunesMGI.Enums;
using System.IO;
using ComunesMGI.Condiciones;

namespace MGI.AccesoDatos
{
    interface ISharepoint
    {
        DataEliminarTarea EliminarTarea(string sitio, int tarea, string urlWS);

        void EliminarIncidente(string sitio, int incidente, string urlWS);

        DataAltaIncidente AddIncidente(DataSistema sistema);

        List<DataCampo> GetCampos(string sitioSistema, Lista lista, List<DataCampo> nomCampos, string urlWS);

        List<DataIncidente> GetIncidentes(string sitio, List<Condicion> condiciones, string urlWS);

        List<DataIncidente> GetIncidentesAsignablesWP(string sitioSistema, int wkpCod, string urlWS, DateTime fechaEstFinWP);

        List<DataIncidenteReporte> GetIncidentesReporte(DataSistema sistema);

        List<DataTarea> GetTareas(string sitio, int idIncidente, string urlWS);

        string AsignarResponsable(string sitio, int idIncidente, int idTarea, DataUsuario usuario, string urlWS);

        void SetIncidenteWP(string sitio, int idWorkPackage, int idIncidente, string urlWS);

        List<DataIncidente> GetIncidentesWP(string sitio, int idWorkPackage, string urlWS);

        string UploadFile(Stream sourceStream, string urlWS);

        bool AdjuntarArchivoIncidente(string nombreArchivo, string urlSistema, int idIncidente, string nroTemp, string urlWS);

        DataAltaTarea AddTarea(string urlSistema, List<DataCampo> campos, string urlWS);

        int GetEsfuerzoTotalWP(string sitio, int idWP, string urlWS);

        int GetEsfuerzoRestanteWP(string sitio, int idWP, string urlWS);

        void CerrarAsociadosWP(string sitio, int wpId, string urlWS);

        bool ChkWpIncidentesOTareasSinCerrar(string sitio, int wkpCod, string urlWS);

        List<DataIncidenteReporte> GetIncidentesCreadosPeriodo(DataSistema sistemas, DateTime perFchIni, DateTime perFchFin);

        List<DataIncidenteReporte> GetIncidentesReporteFiltroUsrEstado(DataSistema sistema, string usuario, string valorCampo, DateTime perFchIni, DateTime perFchFin);

        DataIncidenteConCampos GetIncidente(int idIncidente, string sitio, List<DataCampo> campos, string urlWS);

        void ModificarIncidente(string sitio, DataIncidenteConCampos incidente, string urlWS);

        void DesasociarIncidentesWP(string sitio, List<int> incidentes, string urlWS);

        DataTareaConCampos GetTarea(string sitio, int idTarea, List<DataCampo> campos, string urlWS);

        List<DataSincronizarTarea> GetTareasAsignadasDespuesFecha(string sitio, DateTime fechaSincronizacion, string nombreUsuario, string urlWS);

        void ModificarTarea(string sitio, DataTareaConCampos tarea, string urlWS);

        string TraducirCampo(string sitio, Lista lista, string campo, string valorCampo, string urlWS);

        bool IsFechaEstimadaEntregaWPMayorIncidentes(string sitio, int idWP, DateTime fechaEstEntWP, string urlWS);

        void ChkUrlWS(string urlWS);

        void ChkSitioSistema(string sitio, string urlWS);

        List<string> GetEstadosIncidentes(string sitio, string urlWS);
    }
}
